package edu.algo3.algoThief.domain;

import edu.algo3.algoThief.util.Constants;

public class CondicionDeTriunfo {

    private Ciudad ciudadDondeEstaElLadron;

    public CondicionDeTriunfo(Ciudad ciudadDondeEstaElLadron) {

        this.ciudadDondeEstaElLadron = ciudadDondeEstaElLadron;
    }

    public boolean estaEnCiudadDondeEstaElLadron() {

        // Verifico si el jugador esta en la ciudad donde se encuentra el ladron
        if (!(this.ciudadDondeEstaElLadron.estaVisitada() && this.ciudadDondeEstaElLadron
            .getNombre().equals(
                Juego.getInstance().getJugador().getCiudadActual().getNombre()))) {
            return Boolean.FALSE;
        }
        return Boolean.TRUE;

    }

    public boolean emitioLaOrdenDeArrestoCorrecta() {

        OrdenDeArresto ordenDeArresto = this.getOrdenDeArresto();
        // Si la orden de arresto fue emitida y el apellido del sospechoso no es vacio y es
        // efectivamente el del ladron buscado
        if ((!Constants.VACIO.equals(ordenDeArresto.getApellido()))
            && ordenDeArresto.fueEmitida()
            && (ordenDeArresto.getApellido().equals(this.getApellidoDeLadron()))) {
            return Boolean.TRUE;

        }
        return Boolean.FALSE;

    }

    public boolean haPerdido() {

        if (Tiempo.seAcaboElTiempo()) {
            return Boolean.TRUE;
        }
        return Boolean.FALSE;
    }

    private OrdenDeArresto getOrdenDeArresto() {

        return Juego.getInstance().getOrdenDeArresto();
    }

    private String getApellidoDeLadron() {

        return Juego.getInstance().getContextoDelJuego().getCaso().getLadron()
            .getApellido();
    }

}
